#pragma once
#include <mutex>
#include <unordered_map>
#include <deque>
#include "publicstruct.h"
using namespace std;

// Feed同步TimeLine 单例模式 线程安全
class FeedSyncTimeLine
{
private:
    // 构造函数私有化,保证不在类的外部实例化
    FeedSyncTimeLine();

public:
    ~FeedSyncTimeLine();
    // 获取实例
    static FeedSyncTimeLine *getInstance()
    {
        return globalInstance;
    }
    // 获取同步会话Map   返回引用,不然返回的只是sync_map的副本,对其进行的 添加删除操作都将不会影响到它本身
    inline unordered_map<int, deque<struct st_feed>> &getSyncMap() { return sync_feedmap; }
    // 添加动态到用户的Feed同步TimeLine(收件箱)
    void addFeedToSyncTimeLine(int uid, struct st_feed feed);

public:
    static unordered_map<int,int>  sync_count;  // 第一次拉取朋友圈的同时拉取点赞评论

private:
    static FeedSyncTimeLine *globalInstance; // 全局唯一实例
    mutex m_mutex;                           // 互斥量
    unordered_map<int, deque<struct st_feed>> sync_feedmap;
    
};